home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Games / MacGnuGo 0.5e / gnugo.src / showbord.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-08-28  |  6.5 KB  |  292 lines  |  [TEXT/R*ch]

  1. /*
  2.                 GNU GO - the game of Go (Wei-Chi)
  3.                 Version 1.1   last revised 3-1-89
  4.            Copyright (C) Free Software Foundation, Inc.
  5.                       written by Man L. Li
  6.                       modified by Wayne Iba
  7.                     documented by Bob Webber
  8. */
  9. /*
  10. This program is free software; you can redistribute it and/or modify
  11. it under the terms of the GNU General Public License as published by
  12. the Free Software Foundation - version 1.
  13.  
  14. This program is distributed in the hope that it will be useful,
  15. but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. GNU General Public License in file COPYING for more details.
  18.  
  19. You should have received a copy of the GNU General Public License
  20. along with this program; if not, write to the Free Software
  21. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22.  
  23. Please report any bug/fix, modification, suggestion to
  24.  
  25. mail address:   Man L. Li
  26.                 Dept. of Computer Science
  27.                 University of Houston
  28.                 4800 Calhoun Road
  29.                 Houston, TX 77004
  30.  
  31. e-mail address: manli@cs.uh.edu         (Internet)
  32.                 coscgbn@uhvax1.bitnet   (BITNET)
  33.                 70070,404               (CompuServe)
  34. */
  35.  
  36. #include <stdio.h>
  37.  
  38. #define EMPTY 0
  39. #define WHITE 1
  40.  
  41. extern unsigned char p[19][19];
  42. extern int mymove, umove;
  43. extern int mk, uk;  /* piece captured */
  44. extern int MAXX, MAXY;
  45.  
  46. showboard()
  47. /* show go board */
  48.   {
  49.    int i, j, ii;
  50.  
  51. /* p = 0 for empty ,p = 1 for white piece, p = 2 for black piece */
  52.    printf("   A B C D E F G H J K L M N O P Q R S T\n");
  53. /* row 19 to 17 */
  54.    for (i = 0; i < 3; i++)
  55.      {
  56.       ii = MAXY - i;
  57.       printf("%2d",ii);
  58.  
  59.       for (j = 0; j < MAXY; j++)
  60.     if (p[i][j] == EMPTY)
  61.        printf(" -");
  62.     else if (p[i][j] == WHITE)
  63.         printf(" O");
  64.          else printf(" X");
  65.  
  66.       printf("%2d",ii);
  67.       printf("\n");
  68.      }
  69. /* row MAXX-3 */
  70.    printf("%2d",MAXX-3);
  71.  
  72.    for (j = 0; j < 3; j++)
  73.      if (p[3][j] == EMPTY)
  74.     printf(" -");
  75.      else if (p[3][j] == WHITE)
  76.          printf(" O");
  77.       else printf(" X");
  78.  
  79.    if (p[3][3] == 0)
  80.       printf(" +");
  81.    else if (p[3][3] == WHITE)
  82.        printf(" O");
  83.     else printf(" X");
  84.  
  85.    for (j = 4; j < MAXX/2; j++)
  86.      if (p[3][j] == EMPTY)
  87.     printf(" -");
  88.      else if (p[3][j] == WHITE)
  89.          printf(" O");
  90.       else printf(" X");
  91.  
  92.    if (p[3][MAXX/2] == EMPTY)
  93.       printf(" +");
  94.    else if (p[3][MAXX/2] == WHITE)
  95.        printf(" O");
  96.     else printf(" X");
  97.  
  98.    for (j = 1+MAXX/2; j < MAXX-4; j++)
  99.      if (p[3][j] == EMPTY)
  100.     printf(" -");
  101.      else if (p[3][j] == WHITE)
  102.          printf(" O");
  103.       else printf(" X");
  104.  
  105.    if (p[3][MAXX-4] == EMPTY)
  106.       printf(" +");
  107.    else if (p[3][MAXX-4] == WHITE)
  108.        printf(" O");
  109.     else printf(" X");
  110.  
  111.    for (j = MAXX-3; j < MAXY; j++)
  112.      if (p[3][j] == EMPTY)
  113.     printf(" -");
  114.      else if (p[3][j] == WHITE)
  115.          printf(" O");
  116.       else printf(" X");
  117.  
  118.    printf("%2d",MAXX-3);
  119.    if (umove == 1)
  120.       printf("     Your color: White O\n");
  121.    else
  122.       if (umove == 2)
  123.      printf("     Your color: Black X\n");
  124.       else
  125.      printf("\n");
  126. /* row MAXX-4 to 11 */
  127.    for (i = 4; i < MAXX/2; i++)
  128.      {
  129.       ii = MAXY - i;
  130.       printf("%2d",ii);
  131.  
  132.       for (j = 0; j < MAXY; j++)
  133.     if (p[i][j] == EMPTY)
  134.        printf(" -");
  135.     else if (p[i][j] == WHITE)
  136.         printf(" O");
  137.          else printf(" X");
  138.  
  139.       printf("%2d",ii);
  140.       if (i == 4)
  141.     {
  142.      if (mymove == 1)
  143.         printf("     My color:   White O\n");
  144.      else
  145.         if (mymove == 2)
  146.            printf("     My color:   Black X\n");
  147.         else
  148.            printf("\n");
  149.        }
  150.       else
  151.      if (i != 8)
  152.         printf("\n");
  153.      else
  154.         printf("     You have captured %d pieces\n", mk);
  155.      }
  156. /* row 1+MAXX/2 */
  157.    printf("%2d",1+MAXX/2);
  158.  
  159.    for (j = 0; j < 3; j++)
  160.      if (p[MAXX/2][j] == EMPTY)
  161.     printf(" -");
  162.      else if (p[MAXX/2][j] == WHITE)
  163.          printf(" O");
  164.       else printf(" X");
  165.  
  166.    if (p[MAXX/2][3] == EMPTY)
  167.       printf(" +");
  168.    else if (p[MAXX/2][3] == WHITE)
  169.        printf(" O");
  170.     else printf(" X");
  171.  
  172.    for (j = 4; j < MAXX/2; j++)
  173.      if (p[MAXX/2][j] == EMPTY)
  174.     printf(" -");
  175.      else if (p[MAXX/2][j] == WHITE)
  176.          printf(" O");
  177.       else printf(" X");
  178.  
  179.    if (p[MAXX/2][MAXX/2] == EMPTY)
  180.       printf(" +");
  181.    else if (p[MAXX/2][MAXX/2] == WHITE)
  182.        printf(" O");
  183.     else printf(" X");
  184.  
  185.    for (j = 1+MAXX/2; j < MAXX-4; j++)
  186.      if (p[MAXX/2][j] == EMPTY)
  187.     printf(" -");
  188.      else if (p[MAXX/2][j] == WHITE)
  189.          printf(" O");
  190.       else printf(" X");
  191.  
  192.    if (p[MAXX/2][MAXX-4] == EMPTY)
  193.       printf(" +");
  194.    else if (p[MAXX/2][MAXX-4] == WHITE)
  195.        printf(" O");
  196.     else printf(" X");
  197.  
  198.    for (j = MAXX-3; j < MAXY; j++)
  199.      if (p[MAXX/2][j] == EMPTY)
  200.     printf(" -");
  201.      else if (p[MAXX/2][j] == WHITE)
  202.          printf(" O");
  203.       else printf(" X");
  204.  
  205.    printf("%2d",1+MAXX/2);
  206.    printf("     I have captured %d pieces\n", uk);
  207. /* row MAXX/2 to 5 */
  208.    for (i = 1+MAXX/2; i < MAXX-4; i++)
  209.      {
  210.       ii = MAXY - i;
  211.       printf("%2d",ii);
  212.  
  213.       for (j = 0; j < MAXY; j++)
  214.     if (p[i][j] == EMPTY)
  215.        printf(" -");
  216.     else if (p[i][j] == WHITE)
  217.         printf(" O");
  218.          else printf(" X");
  219.  
  220.       printf("%2d",ii);
  221.       printf("\n");
  222.      }
  223. /* row 4 */
  224.    printf(" 4");
  225.  
  226.    for (j = 0; j < 3; j++)
  227.      if (p[MAXX-4][j] == EMPTY)
  228.     printf(" -");
  229.      else if (p[MAXX-4][j] == WHITE)
  230.          printf(" O");
  231.       else printf(" X");
  232.  
  233.    if (p[MAXX-4][3] == EMPTY)
  234.       printf(" +");
  235.    else if (p[MAXX-4][3] == WHITE)
  236.        printf(" O");
  237.     else printf(" X");
  238.  
  239.    for (j = 4; j < MAXX/2; j++)
  240.      if (p[MAXX-4][j] == EMPTY)
  241.     printf(" -");
  242.      else if (p[MAXX-4][j] == WHITE)
  243.          printf(" O");
  244.       else printf(" X");
  245.  
  246.    if (p[MAXX-4][MAXX/2] == EMPTY)
  247.       printf(" +");
  248.    else if (p[MAXX-4][MAXX/2] == WHITE)
  249.        printf(" O");
  250.     else printf(" X");
  251.  
  252.    for (j = 1+MAXX/2; j < MAXX-4; j++)
  253.      if (p[MAXX-4][j] == EMPTY)
  254.     printf(" -");
  255.      else if (p[MAXX-4][j] == WHITE)
  256.          printf(" O");
  257.       else printf(" X");
  258.  
  259.    if (p[MAXX-4][MAXX-4] == EMPTY)
  260.       printf(" +");
  261.    else if (p[MAXX-4][MAXX-4] == WHITE)
  262.        printf(" O");
  263.     else printf(" X");
  264.  
  265.    for (j = MAXX-3; j < MAXY; j++)
  266.      if (p[MAXX-4][j] == EMPTY)
  267.     printf(" -");
  268.      else if (p[MAXX-4][j] == WHITE)
  269.          printf(" O");
  270.       else printf(" X");
  271.  
  272.    printf(" 4");
  273.    printf("\n");
  274. /* row 3 to 1 */
  275.    for (i = MAXX-3; i < MAXY; i++)
  276.      {
  277.       ii = MAXY - i;
  278.       printf("%2d",ii);
  279.  
  280.       for (j = 0; j < MAXY; j++)
  281.     if (p[i][j] == EMPTY)
  282.        printf(" -");
  283.     else if (p[i][j] == WHITE)
  284.         printf(" O");
  285.          else printf(" X");
  286.  
  287.       printf("%2d",ii);
  288.       printf("\n");
  289.      }
  290.    printf("   A B C D E F G H J K L M N O P Q R S T\n\n");
  291.  }  /* end showboard */
  292.